From: kfraser@localhost.localdomain Date: Mon, 10 Jul 2006 16:36:41 +0000 (+0100) Subject: Move the content of the script file vtpm-addtodb into the X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15872 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=b3685ce3b8b39bdd893893c8d3fa84e29fb2c2c2;p=xen.git Move the content of the script file vtpm-addtodb into the vtpm-common.sh script. The newly created function 'vtpm_add_and_activate' also assigns the instance number to the xenstore entry to activate the backend. Renaming of isLocalAddress function to vtpm_isLocalAddress. Signed-off-by: Stefan Berger --- diff --git a/tools/examples/Makefile b/tools/examples/Makefile index fb93063570..c5ccb6c8af 100644 --- a/tools/examples/Makefile +++ b/tools/examples/Makefile @@ -26,7 +26,7 @@ XEN_SCRIPTS += network-route vif-route XEN_SCRIPTS += network-nat vif-nat XEN_SCRIPTS += block XEN_SCRIPTS += block-enbd block-nbd -XEN_SCRIPTS += vtpm vtpm-delete vtpm-addtodb +XEN_SCRIPTS += vtpm vtpm-delete XEN_SCRIPTS += xen-hotplug-cleanup XEN_SCRIPTS += external-device-migrate XEN_SCRIPT_DATA = xen-script-common.sh locking.sh logging.sh diff --git a/tools/examples/README b/tools/examples/README index 9d8adbba49..00ef8dc352 100644 --- a/tools/examples/README +++ b/tools/examples/README @@ -25,7 +25,6 @@ vif-common.sh - sourced by vif-bridge vif-nat - xen virtual network start/stop script in NAT mode vif-route - xen virtual network start/stop script in routed mode vtpm - called by xen-backend.agent to bind/unbind vTPM devices -vtpm-addtodb - script for adding a vTPM instance to the vTPM table vtpm-common.sh - common code for vTPM handling vtpm-delete - remove an entry from the vTPM table given the domain's name diff --git a/tools/examples/vtpm-addtodb b/tools/examples/vtpm-addtodb deleted file mode 100644 index 482b1610d2..0000000000 --- a/tools/examples/vtpm-addtodb +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -# This script must be called with the following parameters to have -# an entry added to the TPM-to-domain associations table in /etc/xen/vtpm.db -# vtpm-addtodb - -dir=$(dirname "$0") -. "$dir/vtpm-common.sh" - -vtpmdb_add_instance $1 $2 diff --git a/tools/examples/vtpm-common.sh b/tools/examples/vtpm-common.sh index e4210d1669..2e4c89dfdb 100644 --- a/tools/examples/vtpm-common.sh +++ b/tools/examples/vtpm-common.sh @@ -24,12 +24,9 @@ VTPMDB="/etc/xen/vtpm.db" #In the vtpm-impl file some commands should be defined: # vtpm_create, vtpm_setup, vtpm_start, etc. (see below) -#This should be indicated by setting VTPM_IMPL_DEFINED. if [ -r "$dir/vtpm-impl" ]; then . "$dir/vtpm-impl" -fi - -if [ -z "$VTPM_IMPL_DEFINED" ]; then +else function vtpm_create () { true } @@ -245,6 +242,12 @@ function vtpm_create_instance () { claim_lock vtpmdb instance=$(vtpmdb_find_instance $domname) + + if [ "$instance" == "0" -a "$reason" != "create" ]; then + release_lock vtpmdb + return + fi + if [ "$instance" == "0" ]; then #Try to give the preferred instance to the domain instance=$(xenstore_read "$XENBUS_PATH"/pref_instance) @@ -317,7 +320,7 @@ function vtpm_delete_instance () { # "-1" : the given machine name is invalid # "0" : this is not an address of this machine # "1" : this is an address local to this machine -function isLocalAddress() { +function vtpm_isLocalAddress() { local addr res addr=$(ping $1 -c 1 | \ gawk '{ print substr($3,2,length($3)-2); exit }') @@ -347,7 +350,7 @@ function isLocalAddress() { # 2nd: name of the domain to migrate # 3rd: the migration step to perform function vtpm_migration_step() { - local res=$(isLocalAddress $1) + local res=$(vtpm_isLocalAddress $1) if [ "$res" == "0" ]; then vtpm_migrate $1 $2 $3 fi @@ -361,8 +364,39 @@ function vtpm_migration_step() { # 3rd: the last successful migration step that was done function vtpm_recover() { local res - res=$(isLocalAddress $1) + res=$(vtpm_isLocalAddress $1) if [ "$res" == "0" ]; then vtpm_migrate_recover $1 $2 $3 fi } + + +#Determine the domain id given a domain's name. +#1st parameter: name of the domain +#return value: domain id or -1 if domain id could not be determined +function vtpm_domid_from_name () { + local id name ids + ids=$(xenstore-list /local/domain) + for id in $ids; do + name=$(xenstore-read /local/domain/$id/name) + if [ "$name" == "$1" ]; then + echo "$id" + return + fi + done + echo "-1" +} + + +#Add a virtual TPM instance number and its associated domain name +#to the VTPMDB file and activate usage of this virtual TPM instance +#by writing the instance number into the xenstore +#1st parm: name of virtual machine +#2nd parm: instance of assoicate virtual TPM +function vtpm_add_and_activate() { + local domid=$(vtpm_domid_from_name $1) + if [ "$domid" != "-1" ]; then + vtpmdb_add_instance $1 $2 + xenstore-write backend/vtpm/$domid/0/instance $2 + fi +} diff --git a/tools/examples/vtpm-impl b/tools/examples/vtpm-impl index 25b4e4a41b..bd6288d636 100644 --- a/tools/examples/vtpm-impl +++ b/tools/examples/vtpm-impl @@ -32,8 +32,6 @@ # OF THE POSSIBILITY OF SUCH DAMAGE. # =================================================================== -VTPM_IMPL_DEFINED=1 - # | SRC | TAG | CMD SIZE | ORD | type| mode TPM_CMD_OPEN=\\x00\\x00\\x00\\x00\\x01\\xc1\\x00\\x00\\x00\\x10\\x01\\x00\\x00\\x01\\x01\\x01 TPM_CMD_RESM=\\x00\\x00\\x00\\x00\\x01\\xc1\\x00\\x00\\x00\\x10\\x01\\x00\\x00\\x01\\x01\\x02